<?php
abstract class Mozg_Collection
{
    //protected $objectCollection = array();
    /**
		имя класса объектов в коллекции.
		должно быть задано в наследниках!!!!
     */
    protected $_itemClassName = false;
    
    protected function __construct ()
    {}
    
    public function __get ($name)
    {
    	if (!$name) return;
        $this->$name = $this->Get($name);
        return $this->$name;
    }

    final public function __unset ($name)
    {
        throw new Mozg_Exception_System(Mozg_Lang::_('CLASS_PROPERTIES_READ_ONLY'));
    }
    
    /**
		мэджик метод для функции isset
  		проверяет, возможно ли создать объект для коллекции
     */
    public function __isset ($name)
    {

        if ($this->IsExists($name)) return true;
        return false;
    }

    /**
		должен возвращать инициализированный объект для коллекции
     */
    abstract public function Get ($name);
    
    /**
		должен проверять, можно ли создать элемент для коллекции
     */
    abstract public function IsExists ($name);
}